1110 F╧I=1 TO 1000:? I;:INPUT C:IF C=99999 T╚ 1120
1112 C(I)=C:N┼:STOP
1120 :?:N=I-1:? N"NUMBERS ENTERED":G╧ 5100
4000 REM" ╞OR THE PRINTER AND INTERFACE ╔ USE:
4010 ?" ╨RINTER ON? ";:GO╙997:? G$
4012 P=0:IFG$<>"Y" T╚ RE╘
4020 P=1:IFP1 T╚ RE╘
4022 P1=1:CL╧5:CL╧7:OPEN5,4,5:OPEN7,4,7
4030 F╧ I=1 TO 10
4032 P╥5,C╚(27)C╚(108)C╚(5):REM LEFT MARGIN=5
4033 P╥5,C╚(27)C╚(81)C╚(77):N┼:REM RIGHT MARGIN=77
4039 ?" ╙ET INTERFACE TO ╩UNIOR":GO╙997:RE╘
5100 :REM" ╙ORT NUMBERS:
5110 F╧ I=1 TO N-1
5112 :A=C(I):B=C(I+1):IF A=<B T╚ N┼: G╧5120
5114 C(I)=B:C(I+1)=A:I=I-1:IFI<1 T╚ I=1
5116 G╧5112
5120 :F╧ I=1 TO N:?ST╥(C(I));:IF P T╚ P╥7,ST╥(C(I));
5122 N┼:?:IFP T╚ P╥7
5123 END
╙╧╥╘╔╬╟ ╙╘╥╔╬╟╙:
╚ERE IS A PROGRAM TO ENTER STRINGS INTO MEMORY, THEN IT IS USING MACHINE LANGUAGE TO FAST SORT THEM, LEAVING THE RESULT IN MEMORY, AND PRINTS THE SORTED LIST OF STRINGS:
0 REM "SORT STRINGS" BY ╩OE ╤UITTNER
10 ?C╚(144)C╚(14)
20 P╧56,78:CLR:REM PROTECT 20K+
21 DEF FNA(I)=I-256* FNB(I):DEF FNB(I)=INT(I/256)
22 DEF FNC(I)= P┼(I)+256* P┼(I+1)
30 GO╙4000:FOR I=820 TO 1023:READ A:IF A>255 T╚ 1000
5050 D┴ 200, 177,251, 201,13, 208,3, 76,108,3:REM IF PAIRS ARE EQUAL
5052 D┴ 177,253, 201,13, 208,3, 76,108,3
5054 D┴ 76,102,3:REM "├OMPARE AGAIN
5999 D┴ 999
║JU1
╠INE 5020: 20000 IS PUT INTO 251/2.
╠INE 5021: .┴ (780) IS LOADED INDIRECTLY FROM 251/2. ╔S IT 255, THE END SEARCH INDICATOR? ╔F YES, THEN THE SIGNPOST (.╪ 781) IS SET TO 1 AND THE PROGRAM RETURNS TO ┬┴╙╔├ LINE 5012.
╠INE 5022: .┘ (782) IS INCREMENTED TO ZERO FROM 255, AND CHECKED FOR 255. ╔N CASE .┘ IS 255 THEN SOMETHING IS WRONG, THE SIGNPOST .╪ IS SET TO 2, THE PROGRAM RETURNS TO ┬┴╙╔├ LINES 5012 AND 5013. ╔F .┘ IS NOT 255, THEN .┴ IS LOADED INDIRECTLY FROM 251/2 AGAIN, WITH .┘ INCREMENTED, AND AGAIN UNTIL THE END OF STRING INDICATOR, 13, IS FOUND. ╘HEN .┘ CONTAINS THE NUMBER OF CHARACTERS IN THAT STRING.
╠INE 5023:.┘+1 IS ADDED TO THE CONTENTS OF 251/2, INITIALLY 20000, TO GET THE STARTING BYTE OF THE NEXT STRING. ╘HAT NUMBER IS PUT INTO 253/4.
╠INE 5024: ╘HE FIRST CHARACTERS OF THESE TWO STRINGS ARE COMPARED; THEY MAY NEED NO CHANGE (876), OR NEED REVERSING (892), OR THEY ARE EQUAL (952). ╔F EQUAL, THEN THE TWO 2ND (OR, IF AGAIN EQUAL, EVEN MORE) CHARACTERS OF BOTH STRINGS WILL BE COMPARED.
╠INE 5026: 253/4 IS PUT INTO 251/252, AND THE NEXT PAIR WILL BE COMPARED.
╠INE 5030: ╔F REVERSAL IS NEEDED, THEN TO 5032; IF CHARACTERS ARE EQUAL, THEN TO 5050.
╠INE 5032: ╘HE 1ST STRING IS COPIED INTO 40704+.┘ FOR LATER USE.
╠INES 5034 AND 5046: ╘HE 2ND STRING IS MADE THE 1ST STRING, OVERWRITING THE BYTES THAT CONTAINED THE 1ST STRING.
╠INE 5038: ╘HE STARTING BYTE IS LOCATED, WHERE TO PUT THE STRING THAT IS TO BE RETRIEVED FROM PARKING IN 40704+.┘
╠INES 5040 AND 5042: ╘HE REVERSAL IS COMPLETED.
╠INES 5050 TO 5052: ╘HE NEXT CHARACTERS OF BOTH STRINGS ARE COMPARED